Шрифт:
Интервал:
Закладка:
glue – это невидимый компонент, который расширяется или сжимается по размеру по мере необходимости, чтобы заполнить пространство между компонентами.
Он полезен для сохранения ориентации компонентов в контейнере по мере его изменения.
glue создается с помощью статического метода createGlue.
Разделительная область (rigid area) – это невидимый компонент с фиксированной шириной и высотой.
Этот компонент создается с помощью статического метода createRigidArea.
Кроме этих трех компонентов-разделителей можно использовать невидимый компонент с фиксированным минимальным, максимальным и предпочтительным размерами.
Он является объектом класса Filler, вложенного в класс Box.
SpringLayout
Менеджер компоновки SpringLayout размещает компоненты, определяя ограничения SpringLayout.Constraints между краями компонентов.
Например, вы можете определить, что левый край одного компонента является фиксированным расстоянием (например, 5 пикселей) от правого края другого компонента.
В SpringLayout положение каждого края зависит от положения только одного другого края.
Если далее создается ограничение SpringLayout.Constraints для создания новой привязки края, предыдущее связывание отбрасывается, и край остается зависимым только от одного края.
В отличие от многих менеджеров компоновки SpringLayout автоматически не устанавливает местоположение своих компонентов.
Для установки местоположения компонента, его левый, правый, верхний и нижний края связываются с соответствующими краями контейнера и соседних компонентов.
Края компонента привязываются с помощью объектов SpringLayout.Constraints.
Объект Constraints содержит ограничения, которые определяют способ изменения размера и позиции компонента в контейнере.
Объект Constraints имеет свойства x, y, width и height.
Однако в объекте Constraints эти свойства имеют значения Spring вместо целых чисел.
Кроме того, объектом Constraints можно манипулировать как четырьмя краями – север, юг, восток и запад.
Объект Spring имеет четыре свойства – минимальное, предпочтительное и максимальное значения и фактическое (текущее) значение.
Объект Spring можно представить в виде механической пружины, которая обеспечивает корректирующее усилие, когда пружина сжимается или растягивается от ее предпочтительного значения.
Таким образом, компоновку SpringLayout можно представить, как набор объектов, которые соединены множеством пружин на их краях.
В этом примере мы устанавливаем ограничения методом putConstraint для менеджера SpringLayout.
В которых мы связываем левый край метки с левым краем контейнера.
Верхний край метки с верхним краем контейнера.
Левый край поля с правым краем метки.
Правый край поля с правым краем контейнера.
И нижний край поля с нижним краем контейнера.
JSplitPane
Панель JSplitPane содержит два компонента, разделенных тонкой полосой, которую можно перемещать с помощью мыши, меняя таким образом взаимные размеры компонентов.
Эти два компонента могут располагаться по горизонтали, что определяется константой HORIZONTAL_SPLIT класса JSplitPane, или по вертикали – константа VERTICAL_SPLIT.
Эти константы указываются в конструкторе класса JSplitPane.
Конструктор по умолчанию JSplitPane без аргументов задает горизонтальное расположение компонентов и создает, и размещает две кнопки JButton с надписями «left button» и «right button».
Панель JSplitPane при перемещении разделительной черты может перерисовывать компоненты сразу же по мере передвижения или после окончательной установки разделительной черты.
Это определяется вторым параметром конструктора JSplitPane.
Остальные конструкторы класса JSplitPane кроме расположения задают два компонента панели.
Очень часто компоненты, размещаемые на панели, – это панели прокрутки JScrollPane, содержащие текст, изображение, таблицу или другие компоненты.
Положение разделительной черты отмечается числом пикселов от края панели.
Его можно установить методом setDividerLocation.
Толщина разделительной черты устанавливается методом setDividerSize, параметр которого задается в пикселах.
По умолчанию толщина равна 8 пикселов.
Разделительную черту нельзя переместить так, чтобы компонент стал меньше своего минимального размера.
На разделительную черту можно поместить две небольшие кнопки с треугольными стрелками методом setOneTouchExpandable (true).
При щелчке кнопкой мыши на одной из этих кнопок один компонент расширяется на всю панель, а другой исчезает полностью.
Компоненты можно установить на панель или заменить другими компонентами с помощью методов setLeftComponent, setRightComponent, setTopComponent, setBottomComponent.
JTabbedPane
Мы уже видели менеджер компоновки CardLayout, который показывает в контейнере стек компонентов, отображая только один, первый компонент.
При этом остальные компоненты лежат под первым в определенном порядке.
Панель JTabbedPane добавляет к такой компоновки интерфейс в виде вкладок, с помощью которого пользователь выбирает, какой компонент просматривать, выбирая вкладку, соответствующую требуемому компоненту.
Конструктор по умолчанию класса JTabbedPane создает пустую панель без вкладок.
Первый аргумент конструктора задает расположение вкладок с помощью констант TOP, BOTTOM, LEFT, RIGHT.
Как правило, вкладки помещаются сверху (TOP), но, их можно поместить снизу, слева и справа.
Если все вкладки не помещаются в окно панели в один ряд, тогда они могут располагаться несколькими рядами или прокручиваться, для чего в строке вкладок появляются кнопки прокрутки.
Такое расположение вкладок определяется вторым аргументом конструктора.
Расположение вкладок в несколько рядов устанавливается константой WRAP_TAB_LAYOUT, расположение вкладок в один ряд с прокруткой устанавливается константой SCROLL_TAB_LAYOUT.
Для добавления компонентов в панель используется метод add или метод addTab, в котором можно указать строку заголовка вкладки, разместить объект или иконку на вкладке, определить всплывающую подсказку для вкладки.
Все это можно сделать также методами set класса JTabbedPane.
Вставить вкладку можно также методом insertTab.
Кроме того, можно задать цвет фона вкладки методом setBackgroundAt.
К панели также можно добавить слушателя, в обработчике которого можно получить индекс выбранной панели.
И вам самостоятельное задание – создайте панель JTabbedPane с кнопками, закрывающими вкладки панели.
При этом должен появляться компонент на крае панели, возвращающий вкладку на место.
JToolBar
Компонент JToolBar – это контейнер, который группирует несколько компонентов – это обычно кнопки с значками – в строку или столбец.
Обычно, панели инструментов обеспечивают легкий доступ к функциональности, которая также обеспечивается меню.
Пустая горизонтальная панель создается конструктором по умолчанию класса JToolBar.
В конструкторе можно задать расположение панели – горизонтальное расположение – это константа HORIZONTAL, вертикальное – константа VERTICAL.
В конструкторе также можно определить заголовок горизонтальной панели, который появляется при перетаскивании панели инструментов.
При применении метода setRollover (true) кнопки панели выделяются при наведении курсора.
При использовании метода setFloatable (false), панель становится неперемещаемой.
Метод add класса JToolBar также позволяет добавить в панель объект Action.
Интерфейс Action расширяет интерфейс ActionListener и используется в случаях, когда к одной и той же функциональности можно обращаться несколькими элементами управления.
В дополнение к методу actionPerformed, определенному интерфейсом ActionListener, этот интерфейс позволяет приложению определять в одном месте клавиши мнемоники и акселерации, значки и строки, используемые меню и кнопками.
Интерфейс Action частично реализован абстрактным классом AbstractAction, в котором не определен только метод actionPerformed.
Поэтому для создания объекта Action достаточно расширить класс AbstractAction, определив этот метод.
Некоторые контейнеры, такие как JMenu, JPopupMenu и JToolBar, умеют использовать объекты, реализующие интерфейс Action.
Достаточно обратиться к методу add такого контейнера, и он создаст соответствующий компонент со свойствами, определенными в объекте Action.
Например, метод add панели инструментов JToolBar создаст инструментальную кнопку JButton с изображением, командной клавишей,
- C# для профессионалов. Том II - Симон Робинсон - Программирование
- Как спроектировать современный сайт - Чои Вин - Программирование
- Microsoft Visual C++ и MFC. Программирование для Windows 95 и Windows NT. Часть 2 - Александр Фролов - Программирование
- Программирование на Java - Н.А. Вязовик - Программирование
- ИНФОРМАЦИОННАЯ ТЕХНОЛОГИЯ. РУКОВОДСТВО ПО УПРАВЛЕНИЮ ДОКУМЕНТИРОВАНИЕМ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ - ГОССТАНДАРТ РОССИИ - Программирование
- Каждому проекту своя методология - Алистэр Коуберн - Программирование
- Сделай видеоигру один и не свихнись - Слава Грис - Программирование / Руководства
- Как почистить сканы книг и сделать книгу - IvanStorogev? KpNemo - Программирование